package com.wsoft.form.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wsoft.form.dto.DbColumnsInfo;
import com.wsoft.form.entity.WfFormTableEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 * 自定义表单-数据表 Mapper 接口
 * </p>
 *
 * @author Z001
 * @since 2024年08月29日 09:11:06
 */
public interface WfFormTableMapper extends BaseMapper<WfFormTableEntity> {

    /**
     * 创建表
     * @param columnList 表字段list
     * @param tableName 表名
     * @param tableDesc 表描述
     */
    void createTable(@Param("columnList") List<String> columnList, @Param("tableName") String tableName, @Param("tableDesc") String tableDesc);

    /**
     * 添加字段
     * @param tableName 表名
     * @param columnSql 字段sql
     */
    void addColumn(@Param("tableName") String tableName, @Param("columnSql") String columnSql);

    /**
     * 修改字段
     * @param tableName
     * @param columnName
     * @param fullColumnType
     */
    void updateColumn(@Param("tableName")String tableName,  @Param("columnName")String columnName, @Param("fullColumnType")String fullColumnType);

    /**
     * 删除字段
     * @param tableName 表名
     * @param column 字段名
     */
    void dropColumn(@Param("tableName") String tableName, @Param("column") String column);

    /**
     * 删除表
     * @param tableName 表名
     */
    void deleteTable(@Param("tableName") String tableName);

    /**
     * 显示所有表
     * @return
     */
    @Select("SHOW TABLES")
    List<String> showTables();

    /**
     * 查询表结构
     * @param tableName
     * @return
     */
    @Select(" SHOW COLUMNS FROM ${tableName};")
    List<DbColumnsInfo> showTableColumns(@Param("tableName") String tableName);

}
